<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::DecisionTreeTrainer&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_decision_tree_trainer.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-static-methods">静态 Protected 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classpcl_1_1_decision_tree_trainer-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::DecisionTreeTrainer&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>Trainer for decision trees.  
 <a href="classpcl_1_1_decision_tree_trainer.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="decision__tree__trainer_8h_source.html">decision_tree_trainer.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:afc74482ca84d3d91276c9f73e3e2abcf"><td class="memItemLeft" align="right" valign="top"><a id="afc74482ca84d3d91276c9f73e3e2abcf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#afc74482ca84d3d91276c9f73e3e2abcf">DecisionTreeTrainer</a> ()</td></tr>
<tr class="memdesc:afc74482ca84d3d91276c9f73e3e2abcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
<tr class="separator:afc74482ca84d3d91276c9f73e3e2abcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbd72a742afb50b77d39c325add78f11"><td class="memItemLeft" align="right" valign="top"><a id="acbd72a742afb50b77d39c325add78f11"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#acbd72a742afb50b77d39c325add78f11">~DecisionTreeTrainer</a> ()</td></tr>
<tr class="memdesc:acbd72a742afb50b77d39c325add78f11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:acbd72a742afb50b77d39c325add78f11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92e70dbf0182027f707a137d3a9bf4bb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a92e70dbf0182027f707a137d3a9bf4bb">setFeatureHandler</a> (<a class="el" href="classpcl_1_1_feature_handler.html">pcl::FeatureHandler</a>&lt; FeatureType, DataSet, ExampleIndex &gt; &amp;feature_handler)</td></tr>
<tr class="memdesc:a92e70dbf0182027f707a137d3a9bf4bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the feature handler used to create and evaluate features.  <a href="classpcl_1_1_decision_tree_trainer.html#a92e70dbf0182027f707a137d3a9bf4bb">更多...</a><br /></td></tr>
<tr class="separator:a92e70dbf0182027f707a137d3a9bf4bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e8c427ba5b8efa0df8464eb5e7258a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a4e8c427ba5b8efa0df8464eb5e7258a2">setStatsEstimator</a> (<a class="el" href="classpcl_1_1_stats_estimator.html">pcl::StatsEstimator</a>&lt; LabelType, NodeType, DataSet, ExampleIndex &gt; &amp;stats_estimator)</td></tr>
<tr class="memdesc:a4e8c427ba5b8efa0df8464eb5e7258a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the object for estimating the statistics for tree nodes.  <a href="classpcl_1_1_decision_tree_trainer.html#a4e8c427ba5b8efa0df8464eb5e7258a2">更多...</a><br /></td></tr>
<tr class="separator:a4e8c427ba5b8efa0df8464eb5e7258a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90f7f50df5c6d7ccc58b6def6430e3a9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a90f7f50df5c6d7ccc58b6def6430e3a9">setMaxTreeDepth</a> (const size_t max_tree_depth)</td></tr>
<tr class="memdesc:a90f7f50df5c6d7ccc58b6def6430e3a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum depth of the learned tree.  <a href="classpcl_1_1_decision_tree_trainer.html#a90f7f50df5c6d7ccc58b6def6430e3a9">更多...</a><br /></td></tr>
<tr class="separator:a90f7f50df5c6d7ccc58b6def6430e3a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31b6a9b0ec5b627cf621776b63f70be7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a31b6a9b0ec5b627cf621776b63f70be7">setNumOfFeatures</a> (const size_t num_of_features)</td></tr>
<tr class="memdesc:a31b6a9b0ec5b627cf621776b63f70be7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of features used to find optimal decision features.  <a href="classpcl_1_1_decision_tree_trainer.html#a31b6a9b0ec5b627cf621776b63f70be7">更多...</a><br /></td></tr>
<tr class="separator:a31b6a9b0ec5b627cf621776b63f70be7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47658b78a12f0f8dc1acb6f9974c7ec3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a47658b78a12f0f8dc1acb6f9974c7ec3">setNumOfThresholds</a> (const size_t num_of_threshold)</td></tr>
<tr class="memdesc:a47658b78a12f0f8dc1acb6f9974c7ec3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of thresholds tested for finding the optimal decision threshold on the feature responses.  <a href="classpcl_1_1_decision_tree_trainer.html#a47658b78a12f0f8dc1acb6f9974c7ec3">更多...</a><br /></td></tr>
<tr class="separator:a47658b78a12f0f8dc1acb6f9974c7ec3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa84e9a077ade50a8f246c2d5c8ebb72e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#aa84e9a077ade50a8f246c2d5c8ebb72e">setTrainingDataSet</a> (DataSet &amp;data_set)</td></tr>
<tr class="memdesc:aa84e9a077ade50a8f246c2d5c8ebb72e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the input data set used for training.  <a href="classpcl_1_1_decision_tree_trainer.html#aa84e9a077ade50a8f246c2d5c8ebb72e">更多...</a><br /></td></tr>
<tr class="separator:aa84e9a077ade50a8f246c2d5c8ebb72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfa12496668f181e8128e657fdb0bb01"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#adfa12496668f181e8128e657fdb0bb01">setExamples</a> (std::vector&lt; ExampleIndex &gt; &amp;examples)</td></tr>
<tr class="memdesc:adfa12496668f181e8128e657fdb0bb01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Example indices that specify the data used for training.  <a href="classpcl_1_1_decision_tree_trainer.html#adfa12496668f181e8128e657fdb0bb01">更多...</a><br /></td></tr>
<tr class="separator:adfa12496668f181e8128e657fdb0bb01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add4301c8ebb4704365ca7e6c5293a7ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#add4301c8ebb4704365ca7e6c5293a7ff">setLabelData</a> (std::vector&lt; LabelType &gt; &amp;label_data)</td></tr>
<tr class="memdesc:add4301c8ebb4704365ca7e6c5293a7ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the label data corresponding to the example data.  <a href="classpcl_1_1_decision_tree_trainer.html#add4301c8ebb4704365ca7e6c5293a7ff">更多...</a><br /></td></tr>
<tr class="separator:add4301c8ebb4704365ca7e6c5293a7ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae827187aa26efc229653ef2eda9153b4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#ae827187aa26efc229653ef2eda9153b4">setMinExamplesForSplit</a> (size_t n)</td></tr>
<tr class="memdesc:ae827187aa26efc229653ef2eda9153b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the minimum number of examples to continue growing a tree.  <a href="classpcl_1_1_decision_tree_trainer.html#ae827187aa26efc229653ef2eda9153b4">更多...</a><br /></td></tr>
<tr class="separator:ae827187aa26efc229653ef2eda9153b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf9dfd53b3ee6f9da23b608097ff9127"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#acf9dfd53b3ee6f9da23b608097ff9127">setThresholds</a> (std::vector&lt; float &gt; &amp;thres)</td></tr>
<tr class="memdesc:acf9dfd53b3ee6f9da23b608097ff9127"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specify the thresholds to be used when evaluating features.  <a href="classpcl_1_1_decision_tree_trainer.html#acf9dfd53b3ee6f9da23b608097ff9127">更多...</a><br /></td></tr>
<tr class="separator:acf9dfd53b3ee6f9da23b608097ff9127"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60ffc9a571d7fa634dfdbb340e451c20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a60ffc9a571d7fa634dfdbb340e451c20">setDecisionTreeDataProvider</a> (boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_decision_tree_trainer_data_provider.html">pcl::DecisionTreeTrainerDataProvider</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt; &gt; &amp;dtdp)</td></tr>
<tr class="memdesc:a60ffc9a571d7fa634dfdbb340e451c20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specify the data provider.  <a href="classpcl_1_1_decision_tree_trainer.html#a60ffc9a571d7fa634dfdbb340e451c20">更多...</a><br /></td></tr>
<tr class="separator:a60ffc9a571d7fa634dfdbb340e451c20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2038658c7d8bb5b237aab6b3047c607f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a2038658c7d8bb5b237aab6b3047c607f">setRandomFeaturesAtSplitNode</a> (bool b)</td></tr>
<tr class="memdesc:a2038658c7d8bb5b237aab6b3047c607f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specify if the features are randomly generated at each split node.  <a href="classpcl_1_1_decision_tree_trainer.html#a2038658c7d8bb5b237aab6b3047c607f">更多...</a><br /></td></tr>
<tr class="separator:a2038658c7d8bb5b237aab6b3047c607f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85ce3f666e3381de8eb144ad8bdacf72"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a85ce3f666e3381de8eb144ad8bdacf72">train</a> (<a class="el" href="classpcl_1_1_decision_tree.html">DecisionTree</a>&lt; NodeType &gt; &amp;tree)</td></tr>
<tr class="memdesc:a85ce3f666e3381de8eb144ad8bdacf72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trains a decision tree using the set training data and settings.  <a href="classpcl_1_1_decision_tree_trainer.html#a85ce3f666e3381de8eb144ad8bdacf72">更多...</a><br /></td></tr>
<tr class="separator:a85ce3f666e3381de8eb144ad8bdacf72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a145e99edd94d717b5a3442fccff68513"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a145e99edd94d717b5a3442fccff68513">trainDecisionTreeNode</a> (std::vector&lt; FeatureType &gt; &amp;features, std::vector&lt; ExampleIndex &gt; &amp;examples, std::vector&lt; LabelType &gt; &amp;label_data, size_t max_depth, NodeType &amp;node)</td></tr>
<tr class="memdesc:a145e99edd94d717b5a3442fccff68513"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trains a decision tree node from the specified features, label data, and examples.  <a href="classpcl_1_1_decision_tree_trainer.html#a145e99edd94d717b5a3442fccff68513">更多...</a><br /></td></tr>
<tr class="separator:a145e99edd94d717b5a3442fccff68513"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
静态 Protected 成员函数</h2></td></tr>
<tr class="memitem:a0de4711386d78a29d58770b5fd785a9b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a0de4711386d78a29d58770b5fd785a9b">createThresholdsUniform</a> (const size_t num_of_thresholds, std::vector&lt; float &gt; &amp;values, std::vector&lt; float &gt; &amp;thresholds)</td></tr>
<tr class="memdesc:a0de4711386d78a29d58770b5fd785a9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates uniformely distrebuted thresholds over the range of the supplied values.  <a href="classpcl_1_1_decision_tree_trainer.html#a0de4711386d78a29d58770b5fd785a9b">更多...</a><br /></td></tr>
<tr class="separator:a0de4711386d78a29d58770b5fd785a9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:ae52d59ebb69707299a041792b22f6c27"><td class="memItemLeft" align="right" valign="top"><a id="ae52d59ebb69707299a041792b22f6c27"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#ae52d59ebb69707299a041792b22f6c27">max_tree_depth_</a></td></tr>
<tr class="memdesc:ae52d59ebb69707299a041792b22f6c27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum depth of the learned tree. <br /></td></tr>
<tr class="separator:ae52d59ebb69707299a041792b22f6c27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b7857d6fcd89d964fa1b2ba07964ac0"><td class="memItemLeft" align="right" valign="top"><a id="a5b7857d6fcd89d964fa1b2ba07964ac0"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a5b7857d6fcd89d964fa1b2ba07964ac0">num_of_features_</a></td></tr>
<tr class="memdesc:a5b7857d6fcd89d964fa1b2ba07964ac0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of features used to find optimal decision features. <br /></td></tr>
<tr class="separator:a5b7857d6fcd89d964fa1b2ba07964ac0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30525d111a074464d9631b0ba900514f"><td class="memItemLeft" align="right" valign="top"><a id="a30525d111a074464d9631b0ba900514f"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a30525d111a074464d9631b0ba900514f">num_of_thresholds_</a></td></tr>
<tr class="memdesc:a30525d111a074464d9631b0ba900514f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of thresholds. <br /></td></tr>
<tr class="separator:a30525d111a074464d9631b0ba900514f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afca25306578c18cc5e6891d1fde37370"><td class="memItemLeft" align="right" valign="top"><a id="afca25306578c18cc5e6891d1fde37370"></a>
<a class="el" href="classpcl_1_1_feature_handler.html">pcl::FeatureHandler</a>&lt; FeatureType, DataSet, ExampleIndex &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">feature_handler_</a></td></tr>
<tr class="memdesc:afca25306578c18cc5e6891d1fde37370"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1_feature_handler.html" title="Utility class interface which is used for creating and evaluating features.">FeatureHandler</a> instance, responsible for creating and evaluating features. <br /></td></tr>
<tr class="separator:afca25306578c18cc5e6891d1fde37370"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02407f5bbd2950a55546f502a5773043"><td class="memItemLeft" align="right" valign="top"><a id="a02407f5bbd2950a55546f502a5773043"></a>
<a class="el" href="classpcl_1_1_stats_estimator.html">pcl::StatsEstimator</a>&lt; LabelType, NodeType, DataSet, ExampleIndex &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a></td></tr>
<tr class="memdesc:a02407f5bbd2950a55546f502a5773043"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classpcl_1_1_stats_estimator.html" title="Class interface for gathering statistics for decision tree learning.">StatsEstimator</a> instance, responsible for gathering stats about a node. <br /></td></tr>
<tr class="separator:a02407f5bbd2950a55546f502a5773043"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fa0c3d3f6f233e3dc0ec6db86fadd18"><td class="memItemLeft" align="right" valign="top"><a id="a7fa0c3d3f6f233e3dc0ec6db86fadd18"></a>
DataSet&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a></td></tr>
<tr class="memdesc:a7fa0c3d3f6f233e3dc0ec6db86fadd18"><td class="mdescLeft">&#160;</td><td class="mdescRight">The training data set. <br /></td></tr>
<tr class="separator:a7fa0c3d3f6f233e3dc0ec6db86fadd18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a566006e8f96c21cd21b5030bfebdf77e"><td class="memItemLeft" align="right" valign="top"><a id="a566006e8f96c21cd21b5030bfebdf77e"></a>
std::vector&lt; LabelType &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">label_data_</a></td></tr>
<tr class="memdesc:a566006e8f96c21cd21b5030bfebdf77e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The label data. <br /></td></tr>
<tr class="separator:a566006e8f96c21cd21b5030bfebdf77e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a377137a6d21e986ab79802cd8d2d35e5"><td class="memItemLeft" align="right" valign="top"><a id="a377137a6d21e986ab79802cd8d2d35e5"></a>
std::vector&lt; ExampleIndex &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">examples_</a></td></tr>
<tr class="memdesc:a377137a6d21e986ab79802cd8d2d35e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The example data. <br /></td></tr>
<tr class="separator:a377137a6d21e986ab79802cd8d2d35e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf5484a41b853b82f4e5399c7cd28127"><td class="memItemLeft" align="right" valign="top"><a id="abf5484a41b853b82f4e5399c7cd28127"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#abf5484a41b853b82f4e5399c7cd28127">min_examples_for_split_</a></td></tr>
<tr class="memdesc:abf5484a41b853b82f4e5399c7cd28127"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum number of examples to split a node. <br /></td></tr>
<tr class="separator:abf5484a41b853b82f4e5399c7cd28127"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3d53bab672146cea68fd91e86a169fc"><td class="memItemLeft" align="right" valign="top"><a id="ad3d53bab672146cea68fd91e86a169fc"></a>
std::vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">thresholds_</a></td></tr>
<tr class="memdesc:ad3d53bab672146cea68fd91e86a169fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thresholds to be used instead of generating uniform distributed thresholds. <br /></td></tr>
<tr class="separator:ad3d53bab672146cea68fd91e86a169fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29fd755841928ef5342dbf19e01ae028"><td class="memItemLeft" align="right" valign="top"><a id="a29fd755841928ef5342dbf19e01ae028"></a>
boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_decision_tree_trainer_data_provider.html">pcl::DecisionTreeTrainerDataProvider</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a29fd755841928ef5342dbf19e01ae028">decision_tree_trainer_data_provider_</a></td></tr>
<tr class="memdesc:a29fd755841928ef5342dbf19e01ae028"><td class="mdescLeft">&#160;</td><td class="mdescRight">The data provider which is called before training a specific tree, if pointer is NULL, then data_set_ is used. <br /></td></tr>
<tr class="separator:a29fd755841928ef5342dbf19e01ae028"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a463ddc17542e98ef217d1454ac3250ae"><td class="memItemLeft" align="right" valign="top"><a id="a463ddc17542e98ef217d1454ac3250ae"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_decision_tree_trainer.html#a463ddc17542e98ef217d1454ac3250ae">random_features_at_split_node_</a></td></tr>
<tr class="memdesc:a463ddc17542e98ef217d1454ac3250ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">If true, random features are generated at each node, otherwise, at start of training the tree <br /></td></tr>
<tr class="separator:a463ddc17542e98ef217d1454ac3250ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;class FeatureType, class DataSet, class LabelType, class ExampleIndex, class NodeType&gt;<br />
class pcl::DecisionTreeTrainer&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;</h3>

<p>Trainer for decision trees. </p>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a0de4711386d78a29d58770b5fd785a9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0de4711386d78a29d58770b5fd785a9b">&#9670;&nbsp;</a></span>createThresholdsUniform()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::createThresholdsUniform </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>num_of_thresholds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>values</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>thresholds</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates uniformely distrebuted thresholds over the range of the supplied values. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">num_of_thresholds</td><td>The number of thresholds to create. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">values</td><td>The values for estimating the expected value range. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">thresholds</td><td>The resulting thresholds. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;{</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  <span class="comment">// estimate range of values</span></div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;  <span class="keywordtype">float</span> min_value = ::std::numeric_limits&lt;float&gt;::max();</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <span class="keywordtype">float</span> max_value = -::std::numeric_limits&lt;float&gt;::max();</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_of_values = values.size ();</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> value_index = 0; value_index &lt; num_of_values; ++value_index)</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  {</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">float</span> value = values[value_index];</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="keywordflow">if</span> (value &lt; min_value) min_value = value;</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordflow">if</span> (value &gt; max_value) max_value = value;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;  }</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">float</span> range = max_value - min_value;</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">float</span> step = range / <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(num_of_thresholds+2);</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160; </div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="comment">// compute thresholds</span></div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;  thresholds.resize (num_of_thresholds);</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160; </div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> threshold_index = 0; threshold_index &lt; num_of_thresholds; ++threshold_index)</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  {</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    thresholds[threshold_index] = min_value + step*(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(threshold_index+1));</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  }</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a60ffc9a571d7fa634dfdbb340e451c20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60ffc9a571d7fa634dfdbb340e451c20">&#9670;&nbsp;</a></span>setDecisionTreeDataProvider()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setDecisionTreeDataProvider </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_decision_tree_trainer_data_provider.html">pcl::DecisionTreeTrainerDataProvider</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt; &gt; &amp;&#160;</td>
          <td class="paramname"><em>dtdp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Specify the data provider. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dtdp</td><td>The data provider that should implement getDatasetAndLabels(...) function </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;      {</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a29fd755841928ef5342dbf19e01ae028">decision_tree_trainer_data_provider_</a> = dtdp;</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a29fd755841928ef5342dbf19e01ae028"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a29fd755841928ef5342dbf19e01ae028">pcl::DecisionTreeTrainer::decision_tree_trainer_data_provider_</a></div><div class="ttdeci">boost::shared_ptr&lt; pcl::DecisionTreeTrainerDataProvider&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt; &gt; decision_tree_trainer_data_provider_</div><div class="ttdoc">The data provider which is called before training a specific tree, if pointer is NULL,...</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:237</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adfa12496668f181e8128e657fdb0bb01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfa12496668f181e8128e657fdb0bb01">&#9670;&nbsp;</a></span>setExamples()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setExamples </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; ExampleIndex &gt; &amp;&#160;</td>
          <td class="paramname"><em>examples</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Example indices that specify the data used for training. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">examples</td><td>The examples. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;      {</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">examples_</a> = examples;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a377137a6d21e986ab79802cd8d2d35e5"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">pcl::DecisionTreeTrainer::examples_</a></div><div class="ttdeci">std::vector&lt; ExampleIndex &gt; examples_</div><div class="ttdoc">The example data.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:230</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a92e70dbf0182027f707a137d3a9bf4bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92e70dbf0182027f707a137d3a9bf4bb">&#9670;&nbsp;</a></span>setFeatureHandler()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setFeatureHandler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_feature_handler.html">pcl::FeatureHandler</a>&lt; FeatureType, DataSet, ExampleIndex &gt; &amp;&#160;</td>
          <td class="paramname"><em>feature_handler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the feature handler used to create and evaluate features. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">feature_handler</td><td>The feature handler. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;      {</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">feature_handler_</a> = &amp;feature_handler;</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_afca25306578c18cc5e6891d1fde37370"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">pcl::DecisionTreeTrainer::feature_handler_</a></div><div class="ttdeci">pcl::FeatureHandler&lt; FeatureType, DataSet, ExampleIndex &gt; * feature_handler_</div><div class="ttdoc">FeatureHandler instance, responsible for creating and evaluating features.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:221</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="add4301c8ebb4704365ca7e6c5293a7ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add4301c8ebb4704365ca7e6c5293a7ff">&#9670;&nbsp;</a></span>setLabelData()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setLabelData </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; LabelType &gt; &amp;&#160;</td>
          <td class="paramname"><em>label_data</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the label data corresponding to the example data. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">label_data</td><td>The label data. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      {</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">label_data_</a> = label_data;</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a566006e8f96c21cd21b5030bfebdf77e"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">pcl::DecisionTreeTrainer::label_data_</a></div><div class="ttdeci">std::vector&lt; LabelType &gt; label_data_</div><div class="ttdoc">The label data.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:228</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a90f7f50df5c6d7ccc58b6def6430e3a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90f7f50df5c6d7ccc58b6def6430e3a9">&#9670;&nbsp;</a></span>setMaxTreeDepth()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setMaxTreeDepth </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>max_tree_depth</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the maximum depth of the learned tree. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">max_tree_depth</td><td>Maximum depth of the learned tree. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      {</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ae52d59ebb69707299a041792b22f6c27">max_tree_depth_</a> = max_tree_depth;</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_ae52d59ebb69707299a041792b22f6c27"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#ae52d59ebb69707299a041792b22f6c27">pcl::DecisionTreeTrainer::max_tree_depth_</a></div><div class="ttdeci">size_t max_tree_depth_</div><div class="ttdoc">Maximum depth of the learned tree.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:214</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae827187aa26efc229653ef2eda9153b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae827187aa26efc229653ef2eda9153b4">&#9670;&nbsp;</a></span>setMinExamplesForSplit()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setMinExamplesForSplit </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the minimum number of examples to continue growing a tree. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Number of examples </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      {</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#abf5484a41b853b82f4e5399c7cd28127">min_examples_for_split_</a> = n;</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_abf5484a41b853b82f4e5399c7cd28127"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#abf5484a41b853b82f4e5399c7cd28127">pcl::DecisionTreeTrainer::min_examples_for_split_</a></div><div class="ttdeci">size_t min_examples_for_split_</div><div class="ttdoc">Minimum number of examples to split a node.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:233</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a31b6a9b0ec5b627cf621776b63f70be7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31b6a9b0ec5b627cf621776b63f70be7">&#9670;&nbsp;</a></span>setNumOfFeatures()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setNumOfFeatures </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>num_of_features</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the number of features used to find optimal decision features. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">num_of_features</td><td>The number of features. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;      {</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a5b7857d6fcd89d964fa1b2ba07964ac0">num_of_features_</a> = num_of_features;</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a5b7857d6fcd89d964fa1b2ba07964ac0"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a5b7857d6fcd89d964fa1b2ba07964ac0">pcl::DecisionTreeTrainer::num_of_features_</a></div><div class="ttdeci">size_t num_of_features_</div><div class="ttdoc">Number of features used to find optimal decision features.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:216</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a47658b78a12f0f8dc1acb6f9974c7ec3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a47658b78a12f0f8dc1acb6f9974c7ec3">&#9670;&nbsp;</a></span>setNumOfThresholds()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setNumOfThresholds </td>
          <td>(</td>
          <td class="paramtype">const size_t&#160;</td>
          <td class="paramname"><em>num_of_threshold</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the number of thresholds tested for finding the optimal decision threshold on the feature responses. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">num_of_threshold</td><td>The number of thresholds. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      {</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a30525d111a074464d9631b0ba900514f">num_of_thresholds_</a> = num_of_threshold;</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a30525d111a074464d9631b0ba900514f"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a30525d111a074464d9631b0ba900514f">pcl::DecisionTreeTrainer::num_of_thresholds_</a></div><div class="ttdeci">size_t num_of_thresholds_</div><div class="ttdoc">Number of thresholds.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:218</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2038658c7d8bb5b237aab6b3047c607f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2038658c7d8bb5b237aab6b3047c607f">&#9670;&nbsp;</a></span>setRandomFeaturesAtSplitNode()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setRandomFeaturesAtSplitNode </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>b</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Specify if the features are randomly generated at each split node. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">b</td><td>Do it or not. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;      {</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a463ddc17542e98ef217d1454ac3250ae">random_features_at_split_node_</a> = b;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a463ddc17542e98ef217d1454ac3250ae"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a463ddc17542e98ef217d1454ac3250ae">pcl::DecisionTreeTrainer::random_features_at_split_node_</a></div><div class="ttdeci">bool random_features_at_split_node_</div><div class="ttdoc">If true, random features are generated at each node, otherwise, at start of training the tree</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:239</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4e8c427ba5b8efa0df8464eb5e7258a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e8c427ba5b8efa0df8464eb5e7258a2">&#9670;&nbsp;</a></span>setStatsEstimator()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setStatsEstimator </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_stats_estimator.html">pcl::StatsEstimator</a>&lt; LabelType, NodeType, DataSet, ExampleIndex &gt; &amp;&#160;</td>
          <td class="paramname"><em>stats_estimator</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the object for estimating the statistics for tree nodes. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">stats_estimator</td><td>The statistics estimator. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;      {</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a> = &amp;stats_estimator;</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a02407f5bbd2950a55546f502a5773043"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">pcl::DecisionTreeTrainer::stats_estimator_</a></div><div class="ttdeci">pcl::StatsEstimator&lt; LabelType, NodeType, DataSet, ExampleIndex &gt; * stats_estimator_</div><div class="ttdoc">StatsEstimator instance, responsible for gathering stats about a node.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:223</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acf9dfd53b3ee6f9da23b608097ff9127"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf9dfd53b3ee6f9da23b608097ff9127">&#9670;&nbsp;</a></span>setThresholds()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setThresholds </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; float &gt; &amp;&#160;</td>
          <td class="paramname"><em>thres</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Specify the thresholds to be used when evaluating features. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">thres</td><td>The threshold values. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      {</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">thresholds_</a> = thres;</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_ad3d53bab672146cea68fd91e86a169fc"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">pcl::DecisionTreeTrainer::thresholds_</a></div><div class="ttdeci">std::vector&lt; float &gt; thresholds_</div><div class="ttdoc">Thresholds to be used instead of generating uniform distributed thresholds.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:235</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa84e9a077ade50a8f246c2d5c8ebb72e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa84e9a077ade50a8f246c2d5c8ebb72e">&#9670;&nbsp;</a></span>setTrainingDataSet()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::setTrainingDataSet </td>
          <td>(</td>
          <td class="paramtype">DataSet &amp;&#160;</td>
          <td class="paramname"><em>data_set</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sets the input data set used for training. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data_set</td><td>The data set used for training. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a> = data_set;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;      }</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a7fa0c3d3f6f233e3dc0ec6db86fadd18"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">pcl::DecisionTreeTrainer::data_set_</a></div><div class="ttdeci">DataSet data_set_</div><div class="ttdoc">The training data set.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.h:226</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a85ce3f666e3381de8eb144ad8bdacf72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85ce3f666e3381de8eb144ad8bdacf72">&#9670;&nbsp;</a></span>train()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::train </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_decision_tree.html">pcl::DecisionTree</a>&lt; NodeType &gt; &amp;&#160;</td>
          <td class="paramname"><em>tree</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Trains a decision tree using the set training data and settings. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">tree</td><td>Destination for the trained tree. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;{</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;  <span class="comment">// create random features</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;  std::vector&lt;FeatureType&gt; features;</div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a463ddc17542e98ef217d1454ac3250ae">random_features_at_split_node_</a>)</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">feature_handler_</a>-&gt;createRandomFeatures (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a5b7857d6fcd89d964fa1b2ba07964ac0">num_of_features_</a>, features);</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  <span class="comment">// recursively build decision tree</span></div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;  NodeType root_node; </div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  tree.<a class="code" href="classpcl_1_1_decision_tree.html#abf084113b4b850e49fade3202b90b144">setRoot</a> (root_node);</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a29fd755841928ef5342dbf19e01ae028">decision_tree_trainer_data_provider_</a>)</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  {</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    std::cerr &lt;&lt; <span class="stringliteral">&quot;use decision_tree_trainer_data_provider_&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a29fd755841928ef5342dbf19e01ae028">decision_tree_trainer_data_provider_</a>-&gt;getDatasetAndLabels (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">label_data_</a>, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">examples_</a>);</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a145e99edd94d717b5a3442fccff68513">trainDecisionTreeNode</a> (features, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">examples_</a>, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">label_data_</a>, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ae52d59ebb69707299a041792b22f6c27">max_tree_depth_</a>, tree.<a class="code" href="classpcl_1_1_decision_tree.html#a67bb781f8421e638107344a37cf0b718">getRoot</a> ());</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">label_data_</a>.clear ();</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>.clear ();</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">examples_</a>.clear ();</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  }</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  {</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a145e99edd94d717b5a3442fccff68513">trainDecisionTreeNode</a> (features, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a377137a6d21e986ab79802cd8d2d35e5">examples_</a>, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a566006e8f96c21cd21b5030bfebdf77e">label_data_</a>, <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ae52d59ebb69707299a041792b22f6c27">max_tree_depth_</a>, tree.<a class="code" href="classpcl_1_1_decision_tree.html#a67bb781f8421e638107344a37cf0b718">getRoot</a> ());</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  }</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_html_a67bb781f8421e638107344a37cf0b718"><div class="ttname"><a href="classpcl_1_1_decision_tree.html#a67bb781f8421e638107344a37cf0b718">pcl::DecisionTree::getRoot</a></div><div class="ttdeci">NodeType &amp; getRoot()</div><div class="ttdoc">Returns the root node of the tree.</div><div class="ttdef"><b>Definition:</b> decision_tree.h:73</div></div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_html_abf084113b4b850e49fade3202b90b144"><div class="ttname"><a href="classpcl_1_1_decision_tree.html#abf084113b4b850e49fade3202b90b144">pcl::DecisionTree::setRoot</a></div><div class="ttdeci">void setRoot(const NodeType &amp;root)</div><div class="ttdoc">Sets the root node of the tree.</div><div class="ttdef"><b>Definition:</b> decision_tree.h:66</div></div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a145e99edd94d717b5a3442fccff68513"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a145e99edd94d717b5a3442fccff68513">pcl::DecisionTreeTrainer::trainDecisionTreeNode</a></div><div class="ttdeci">void trainDecisionTreeNode(std::vector&lt; FeatureType &gt; &amp;features, std::vector&lt; ExampleIndex &gt; &amp;examples, std::vector&lt; LabelType &gt; &amp;label_data, size_t max_depth, NodeType &amp;node)</div><div class="ttdoc">Trains a decision tree node from the specified features, label data, and examples.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.hpp:101</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a145e99edd94d717b5a3442fccff68513"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a145e99edd94d717b5a3442fccff68513">&#9670;&nbsp;</a></span>trainDecisionTreeNode()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class FeatureType , class DataSet , class LabelType , class ExampleIndex , class NodeType &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_decision_tree_trainer.html">pcl::DecisionTreeTrainer</a>&lt; FeatureType, DataSet, LabelType, ExampleIndex, NodeType &gt;::trainDecisionTreeNode </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; FeatureType &gt; &amp;&#160;</td>
          <td class="paramname"><em>features</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; ExampleIndex &gt; &amp;&#160;</td>
          <td class="paramname"><em>examples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; LabelType &gt; &amp;&#160;</td>
          <td class="paramname"><em>label_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_depth</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">NodeType &amp;&#160;</td>
          <td class="paramname"><em>node</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Trains a decision tree node from the specified features, label data, and examples. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">features</td><td>The feature pool used for training. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">examples</td><td>The examples used for training. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">label_data</td><td>The label data corresponding to the examples. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_depth</td><td>The maximum depth of the remaining tree. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">node</td><td>The resulting node. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;{</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_of_examples = examples.size ();</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <span class="keywordflow">if</span> (num_of_examples == 0)</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;  {</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    PCL_ERROR (<span class="stringliteral">&quot;Reached invalid point in decision tree training: Number of examples is 0!&quot;</span>);</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;  };</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160; </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  <span class="keywordflow">if</span> (max_depth == 0)</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  {</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a6caa1bf87f7cb0b697d4fc081f0339af">computeAndSetNodeStats</a>(<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>, examples, label_data, node);</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  };</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <span class="keywordflow">if</span>(examples.size () &lt; <a class="code" href="classpcl_1_1_decision_tree_trainer.html#abf5484a41b853b82f4e5399c7cd28127">min_examples_for_split_</a>) {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a6caa1bf87f7cb0b697d4fc081f0339af">computeAndSetNodeStats</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>, examples, label_data, node);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  }</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160; </div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="keywordflow">if</span>(<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a463ddc17542e98ef217d1454ac3250ae">random_features_at_split_node_</a>) {</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    features.clear ();</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">feature_handler_</a>-&gt;createRandomFeatures (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a5b7857d6fcd89d964fa1b2ba07964ac0">num_of_features_</a>, features);</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  }</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  std::vector&lt;float&gt; feature_results;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  std::vector&lt;unsigned char&gt; flags;</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160; </div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  feature_results.reserve (num_of_examples);</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  flags.reserve (num_of_examples);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="comment">// find best feature for split</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  <span class="keywordtype">int</span> best_feature_index = -1;</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="keywordtype">float</span> best_feature_threshold = 0.0f;</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;  <span class="keywordtype">float</span> best_feature_information_gain = 0.0f;</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_of_features = features.size ();</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> feature_index = 0; feature_index &lt; num_of_features; ++feature_index)</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  {</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <span class="comment">// evaluate features</span></div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">feature_handler_</a>-&gt;evaluateFeature (features[feature_index],</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;                                       <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>,</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                                       examples,</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;                                       feature_results,</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;                                       flags );</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="comment">// get list of thresholds</span></div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">thresholds_</a>.size () &gt; 0)</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    {</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <span class="comment">// compute information gain for each threshold and store threshold with highest information gain</span></div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> threshold_index = 0; threshold_index &lt; <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">thresholds_</a>.size (); ++threshold_index)</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;      {</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160; </div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">float</span> information_gain = <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a4794b4417d32e2844bb137ce7934f905">computeInformationGain</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>,</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;                                                                                 examples,</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;                                                                                 label_data,</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;                                                                                 feature_results,</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                                                                                 flags,</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                                                                                 <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">thresholds_</a>[threshold_index]);</div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        <span class="keywordflow">if</span> (information_gain &gt; best_feature_information_gain)</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        {</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;          best_feature_information_gain = information_gain;</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;          best_feature_index = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (feature_index);</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;          best_feature_threshold = <a class="code" href="classpcl_1_1_decision_tree_trainer.html#ad3d53bab672146cea68fd91e86a169fc">thresholds_</a>[threshold_index];</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        }</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;      }</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    }</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    {</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;            std::vector&lt;float&gt; thresholds;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            thresholds.reserve (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a30525d111a074464d9631b0ba900514f">num_of_thresholds_</a>);</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;            <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a0de4711386d78a29d58770b5fd785a9b">createThresholdsUniform</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a30525d111a074464d9631b0ba900514f">num_of_thresholds_</a>, feature_results, thresholds);</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160; </div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;            <span class="comment">// compute information gain for each threshold and store threshold with highest information gain</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;            <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> threshold_index = 0; threshold_index &lt; <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a30525d111a074464d9631b0ba900514f">num_of_thresholds_</a>; ++threshold_index)</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;            {</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">float</span> threshold = thresholds[threshold_index];</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                <span class="comment">// compute information gain</span></div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                <span class="keyword">const</span> <span class="keywordtype">float</span> information_gain = <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a4794b4417d32e2844bb137ce7934f905">computeInformationGain</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>,</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                                                                                                                                                                 examples,</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                                                                                                                                                                 label_data,</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;                                                                                                                                                                 feature_results,</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                                                                                                                                                                 flags,</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                                                                                                                                                                 threshold);</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                <span class="keywordflow">if</span> (information_gain &gt; best_feature_information_gain)</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                {</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                    best_feature_information_gain = information_gain;</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                    best_feature_index = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (feature_index);</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                    best_feature_threshold = threshold;</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                }</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;            }</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    }</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;  }</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160; </div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  <span class="keywordflow">if</span> (best_feature_index == -1)</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;  {</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a6caa1bf87f7cb0b697d4fc081f0339af">computeAndSetNodeStats</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>, examples, label_data, node);</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  }</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;  <span class="comment">// get branch indices for best feature and best threshold</span></div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  std::vector&lt;unsigned char&gt; branch_indices;</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  branch_indices.reserve (num_of_examples);</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  {</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#afca25306578c18cc5e6891d1fde37370">feature_handler_</a>-&gt;evaluateFeature (features[best_feature_index],</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                                       <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>,</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                                       examples,</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                                       feature_results,</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                                       flags );</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#aa3fda8a830fbaded719ac28b2d6667bb">computeBranchIndices</a> (feature_results,</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;                                            flags,</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                                            best_feature_threshold,</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                                            branch_indices);</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  } </div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160; </div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a6caa1bf87f7cb0b697d4fc081f0339af">computeAndSetNodeStats</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>, examples, label_data, node);</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <span class="comment">// separate data</span></div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;  {</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_of_branches = <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#aada85e9e1bc3116b661bd4f985843ca0">getNumOfBranches</a> ();</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160; </div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    std::vector&lt;size_t&gt; branch_counts (num_of_branches, 0);</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> example_index = 0; example_index &lt; num_of_examples; ++example_index)</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    {</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;      ++branch_counts[branch_indices[example_index]];</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    }</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    node.feature = features[best_feature_index];</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    node.threshold = best_feature_threshold;</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    node.sub_nodes.resize (num_of_branches);</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> branch_index = 0; branch_index &lt; num_of_branches; ++branch_index)</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    {</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <span class="keywordflow">if</span> (branch_counts[branch_index] == 0)</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      {</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        NodeType branch_node;</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a02407f5bbd2950a55546f502a5773043">stats_estimator_</a>-&gt;<a class="code" href="classpcl_1_1_stats_estimator.html#a6caa1bf87f7cb0b697d4fc081f0339af">computeAndSetNodeStats</a> (<a class="code" href="classpcl_1_1_decision_tree_trainer.html#a7fa0c3d3f6f233e3dc0ec6db86fadd18">data_set_</a>, examples, label_data, branch_node);</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        <span class="comment">//branch_node-&gt;num_of_sub_nodes = 0;</span></div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        node.sub_nodes[branch_index] = branch_node;</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      }</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      std::vector&lt;LabelType&gt; branch_labels;</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      std::vector&lt;ExampleIndex&gt; branch_examples;</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      branch_labels.reserve (branch_counts[branch_index]);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      branch_examples.reserve (branch_counts[branch_index]);</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160; </div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> example_index = 0; example_index &lt; num_of_examples; ++example_index)</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;      {</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;        <span class="keywordflow">if</span> (branch_indices[example_index] == branch_index)</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        {</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;          branch_examples.push_back (examples[example_index]);</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;          branch_labels.push_back (label_data[example_index]);</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        }</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;      }</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      <a class="code" href="classpcl_1_1_decision_tree_trainer.html#a145e99edd94d717b5a3442fccff68513">trainDecisionTreeNode</a> (features, branch_examples, branch_labels, max_depth-1, node.sub_nodes[branch_index]);</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    }</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  }</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_decision_tree_trainer_html_a0de4711386d78a29d58770b5fd785a9b"><div class="ttname"><a href="classpcl_1_1_decision_tree_trainer.html#a0de4711386d78a29d58770b5fd785a9b">pcl::DecisionTreeTrainer::createThresholdsUniform</a></div><div class="ttdeci">static void createThresholdsUniform(const size_t num_of_thresholds, std::vector&lt; float &gt; &amp;values, std::vector&lt; float &gt; &amp;thresholds)</div><div class="ttdoc">Creates uniformely distrebuted thresholds over the range of the supplied values.</div><div class="ttdef"><b>Definition:</b> decision_tree_trainer.hpp:277</div></div>
<div class="ttc" id="aclasspcl_1_1_stats_estimator_html_a4794b4417d32e2844bb137ce7934f905"><div class="ttname"><a href="classpcl_1_1_stats_estimator.html#a4794b4417d32e2844bb137ce7934f905">pcl::StatsEstimator::computeInformationGain</a></div><div class="ttdeci">virtual float computeInformationGain(DataSet &amp;data_set, std::vector&lt; ExampleIndex &gt; &amp;examples, std::vector&lt; LabelDataType &gt; &amp;label_data, std::vector&lt; float &gt; &amp;results, std::vector&lt; unsigned char &gt; &amp;flags, const float threshold) const =0</div><div class="ttdoc">Computes the information gain obtained by the specified threshold on the supplied feature evaluation ...</div></div>
<div class="ttc" id="aclasspcl_1_1_stats_estimator_html_a6caa1bf87f7cb0b697d4fc081f0339af"><div class="ttname"><a href="classpcl_1_1_stats_estimator.html#a6caa1bf87f7cb0b697d4fc081f0339af">pcl::StatsEstimator::computeAndSetNodeStats</a></div><div class="ttdeci">virtual void computeAndSetNodeStats(DataSet &amp;data_set, std::vector&lt; ExampleIndex &gt; &amp;examples, std::vector&lt; LabelDataType &gt; &amp;label_data, NodeType &amp;node) const =0</div><div class="ttdoc">Computes and sets the statistics for a node.</div></div>
<div class="ttc" id="aclasspcl_1_1_stats_estimator_html_aa3fda8a830fbaded719ac28b2d6667bb"><div class="ttname"><a href="classpcl_1_1_stats_estimator.html#aa3fda8a830fbaded719ac28b2d6667bb">pcl::StatsEstimator::computeBranchIndices</a></div><div class="ttdeci">virtual void computeBranchIndices(std::vector&lt; float &gt; &amp;results, std::vector&lt; unsigned char &gt; &amp;flags, const float threshold, std::vector&lt; unsigned char &gt; &amp;branch_indices) const =0</div><div class="ttdoc">Computes the branch indices obtained by the specified threshold on the supplied feature evaluation re...</div></div>
<div class="ttc" id="aclasspcl_1_1_stats_estimator_html_aada85e9e1bc3116b661bd4f985843ca0"><div class="ttname"><a href="classpcl_1_1_stats_estimator.html#aada85e9e1bc3116b661bd4f985843ca0">pcl::StatsEstimator::getNumOfBranches</a></div><div class="ttdeci">virtual size_t getNumOfBranches() const =0</div><div class="ttdoc">Returns the number of brances a node can have (e.g. a binary tree has 2).</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>ml/include/pcl/ml/dt/<a class="el" href="decision__tree__trainer_8h_source.html">decision_tree_trainer.h</a></li>
<li>ml/include/pcl/ml/impl/dt/<a class="el" href="decision__tree__trainer_8hpp_source.html">decision_tree_trainer.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_decision_tree_trainer.html">DecisionTreeTrainer</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
